# 测试Bochs ## 1.编写Makefile ​ 使用一下代码创建一个Makefile: ```makefile %.bin:%.asm nasm $*.asm -o $*.bin .PHONY:start write clean start: cd image&&bochsdbg -q -f bochsrc.bxrc write:mbr.bin dd if=mbr.bin of=image/c.img bs=512 count=1 clean: -@cd image&&erase /F /Q *.lock ``` ## 2.创建MBR ​ 使用一下代码创建mbr.asm文件: ```none ;MBR程序 section mbr vstart=0x7c00 mov ax,0 mov ss,ax mov sp,ax ;设置堆栈段和栈指针 ;======================字符显示程序========================== mov ax,0x600 mov bx,0x700 mov cx,0 ;左上角:(0,,0) mov dx,0x184f ;右下角:(80,25) int 0x10 ;设置光标位置 mov ah,2 ;2号子功能 mov bh,0 ;设置光标的页号 mov dx,0 ;(DH,DL),行,列 int 0x10 ;打印字符串 ;INT10 13号子功能 ;ES:BP字符串地址 CX字符串长度 (DH,DL)起始位置:行/列 AL=0,BL=字符属性 BH=页数 mov ax,0 mov es,ax mov ax,message mov bp,ax mov cx,24 mov ax,0x1301 mov bx,0x2 int 0x10 hlt ;hlt:休眠CPU message: db "MBR loaded successfully!" times 510-($-$$) db 0 db 0x55,0xaa ``` ## 3.创建start.cmd ​ 使用一下代码创建start.cmd文件 ```powershell start ``` ## 4.测试 双击打开start.cmd,输入`make write`控制台输出如下: > F:\meOS>make write > nasm mbr.asm -o mbr.bin > dd if=mbr.bin of=image/c.img bs=512 count=1 > rawwrite dd for windows version 0.6beta3. > Written by John Newbigin > This program is covered by terms of the GPL Version 2. > > 1+0 records in > 1+0 records out 输入`make start`当控制台可以继续输入时,输入`c`生成结果如下: ![1544192733033](picture/1544192733033.png) ---- **本来代码中有`hlt`的,但是实际中窗口中的输出文字却在不断闪烁。原因未知。** 在cmd窗口中按下`Ctrl+C`中断模拟器运行,输入`q`退出